package inge_soft.gestoriusNuevo.business.service.abstraction;

import inge_soft.gestoriusNuevo.persistence.DAO.Exceptions.Abstraction.GestoriusException;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.SolicitudOrganizador;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.SolicitudOrganizadorLog;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Usuario;

import java.util.Date;
import java.util.List;

import org.springframework.dao.DataAccessException;

public interface IProcesarSolicitudService {

	public void crearSolicitudOrganizadorLog(SolicitudOrganizadorLog soliUsuL)
			throws GestoriusException;
			
	public void nuevaSolicitudOrganizador(SolicitudOrganizador soliUsu, String nick)
			throws GestoriusException;
	
	public void nuevaSolicitudOrganizador(SolicitudOrganizador soliUsu)
			throws GestoriusException;

	public void actualizarSolicitudOrganizador(SolicitudOrganizador soliUsu)
			throws GestoriusException;
	
	public SolicitudOrganizador obtenerSolicitud(Long idSol) throws DataAccessException;

	public List<SolicitudOrganizador> obtenerSolicitudes()
			throws DataAccessException;
	
	public List<SolicitudOrganizadorLog> obtenerSolicitudesLog() throws DataAccessException;

	public List<SolicitudOrganizador> obtenerSolicitudes(int estado)
			throws DataAccessException;

	public List<SolicitudOrganizador> obtenerSolicitudesPorFechas(
			Date fechaInicio, Date fechaFinal) throws DataAccessException;

	public List<SolicitudOrganizador> obtenerSolicitudesPorFechas(int estado,
			Date fechaInicio, Date fechaFinal) throws DataAccessException;
	
	public void cambiarRolUsuario(Usuario user, int rol) throws DataAccessException;
	
	public boolean tieneSolicitudPendiente(int estado , Usuario user);
}

